package com.oren.webservice.service;

import javax.websocket.server.PathParam;
import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;

/**
 * @author oren
 * @time 2018/1/16 20:47
 * @description
 * @Since jdk1.7
 */
public interface ResfulTest {

    /**
     * 创建区域
     * @param json
     * @return
     */
    @POST
    @Path("/zoneService/createZone")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int createZone(@PathParam("json") String json);

    /**
     * 修改区域
     * @param json
     * @return
     */
    @POST
    @Path("/zoneService/updateZone")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int updateZone(@PathParam("json") String json);

    /**
     * 删除区域
     * @param json
     * @return
     */
    @POST
    @Path("/zoneService/deleteZone")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int deleteZone(@PathParam("json") String json);

    /**
     * 创建用户
     * @param json
     * @return
     */
    @POST
    @Path("/userService/createUser")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int createUser(@PathParam("json") String json);

    /**
     * 修改用户
     * @param json
     * @return
     */
    @POST
    @Path("/userService/updateUser")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int updateUser(@PathParam("json") String json);

    /**
     * 删除用户
     * @param json
     * @return
     */
    @POST
    @Path("/userService/deleteUser")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int deleteUser(@PathParam("json") String json);

    /**
     * 创建策略
     * @param json
     * @return
     */
    @POST
    @Path("/policyService/createPolicy")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int createPolicy(@PathParam("json") String json) throws Exception;

    /**
     * 删除策略
     * @param json
     * @return
     */
    @POST
    @Path("/policyService/deletePolicy")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int deletePolicy(@PathParam("json") String json);

    /**
     * 添加规则
     * @param json
     * @return
     */
    @POST
    @Path("/ruleService/addRule")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int addRule(@PathParam("json") String json);

    /**
     * 移除规则
     * @param json
     * @return
     */
    @POST
    @Path("/ruleService/removeRule")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int removeRule(@PathParam("json") String json);

    /**
     * 清除所有规则
     * @param json
     * @return
     */
    @POST
    @Path("/ruleService/clearRule")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int clearRule(@PathParam("json") String json);

    /**
     * 绑定区域策略
     * @param json
     * @return
     */
    @POST
    @Path("/policyBindService/setZonePolicy")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int setZonePolicy(@PathParam("json") String json);

    /**
     * 绑定用户策略
     * @param json
     * @return
     */
    @POST
    @Path("/policyBindService/setUserPolicy")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int setUserPolicy(@PathParam("json") String json);

    /**
     * 绑定全局策略
     * @param json
     * @return
     */
    @POST
    @Path("/policyBindService/setGlobalPolicy")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int setGlobalPolicy(@PathParam("json") String json);

    /**
     * 绑定特权策略
     * @param json
     * @return
     */
    @POST
    @Path("/policyBindService/setPrivilegePolicy")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int setPrivilegePolicy(@PathParam("json") String json);

    /**
     * 清除所有一切配置
     * @param json
     * @return
     */
    @POST
    @Path("/globalService/clear")
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    int clear(@PathParam("json") String json);
}
